﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Bluyel.Core
{
    /// <summary>
    /// Dimensionnal analysis.
    /// 
    /// The domain usage (the context) where to use the unit measure.
    /// 
    /// see:
    /// http://en.wikipedia.org/wiki/Dimensional_analysis
    /// 
    /// (just of information).
    /// </summary>
    public enum PhyDomainUsage
    {
        // NotSet/Undefined

        // Espace-temps et cinématique

        // Mecanique
          // Mechanical


        // Thermodynamique et mécanique statistique
          // Thermal?

        // Electromagnétisme
          // Electromagnetic

        // Optique
    }

    /// <summary>
    /// Base quantities (7+2) or General derived quantities (??).
    /// 
    /// see: http://en.wikipedia.org/wiki/Physical_quantity
    /// 
    /// </summary>
    public enum TypePhyQuantity
    {
        //--Base quantities
        Length,
        Time,
        Mass,
        temperature,

        // mole
        AmountOfSubstance, 

        ElectricCurrent,
        LuminousIntensity,

        PlaneAngle,

        SolidAngle

        // General derived quantities
        // TODO: vitesse, surface, volume,...
    }


    // other qty prefixes
    // TODO:


    /// <summary>
    /// Represent a Physical Quantity, can have a unit measure.
    /// 
    /// see: http://fr.wikipedia.org/wiki/Grandeur_physique
    /// RENAME: PhysQty ?
    /// </summary>
    public interface ITypePhy : IType
    {
        // PhysicalQtyDomainUsage DomainUsage { get; }
        // TODO: +tard, informatif

        //TypePhysQtyQuantity TypePhysicalQtyQuantity { get; }

        // nb réel ou nb complexe
        // TODO: 
    }
}
